import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;

import redstone.xmlrpc.XmlRpcFault;
import net.bican.wordpress.Wordpress;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.net.MalformedURLException;
import java.awt.Font;

/**
Autore:Stefano Ricciardi
Rilasciato sotto licenza GNU LGPL 3.0
*/
public class PanelUserEPass extends JFrame {
	private JTextField jTextFieldUser;
	private JTextField jTextFieldPass;
	private JTextField jTextFieldRipetiPass;
	private boolean init=false;
	private JTextField jTextFieldNomeSito;
	/**
	 * Create the panel.
	 */
	public PanelUserEPass(boolean init) {
		this.init=init;
		getContentPane().setLayout(null);
		//setResizable(false);
		setTitle("Opzioni - Credenziali di accesso al sito parrocchiale");
		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		jTextFieldUser = new JTextField();
		jTextFieldUser.setText("");
		jTextFieldUser.setColumns(10);
		jTextFieldUser.setBounds(293, 110, 177, 28);
		getContentPane().add(jTextFieldUser);
		
		jTextFieldPass = new JPasswordField();
		jTextFieldPass.setText("");
		jTextFieldPass.setColumns(10);
		jTextFieldPass.setBounds(293, 150, 177, 28);
		getContentPane().add(jTextFieldPass);
		
		jTextFieldRipetiPass = new JPasswordField();
		jTextFieldRipetiPass.setText("");
		jTextFieldRipetiPass.setColumns(10);
		jTextFieldRipetiPass.setBounds(293, 190, 177, 28);
		getContentPane().add(jTextFieldRipetiPass);
		
		JLabel lblNomeUtenteWordpress = new JLabel("Nome utente wordpress");
		lblNomeUtenteWordpress.setBounds(81, 116, 194, 15);
		getContentPane().add(lblNomeUtenteWordpress);
		
		JLabel lblPassword = new JLabel("Password");
		lblPassword.setBounds(81, 156, 194, 15);
		getContentPane().add(lblPassword);
		
		JLabel lblRipetiPassword = new JLabel("Ripeti password");
		lblRipetiPassword.setBounds(81, 196, 194, 15);
		getContentPane().add(lblRipetiPassword);
		
		JButton jButtonSalva = new JButton("SALVA");
		jButtonSalva.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(jTextFieldUser.getText().isEmpty() || jTextFieldPass.getText().isEmpty() || jTextFieldRipetiPass.getText().isEmpty()){
					JOptionPane.showMessageDialog(PanelUserEPass.this,"Errore:\nDevi completare tutti i campi");
					return;
				}
				
				if(!jTextFieldPass.getText().equals(jTextFieldRipetiPass.getText())){
					JOptionPane.showMessageDialog(PanelUserEPass.this,"Errore:\nI campi password e ripeti password non contengono lo stesso testo.");
					return;
				}
				if(jTextFieldNomeSito.getText().isEmpty()){
					JOptionPane.showMessageDialog(PanelUserEPass.this,"Errore:\nIl campo nome sito non deve essere vuoto.");
					return;
				}
				String nomeSito=jTextFieldNomeSito.getText();
				if(!nomeSito.startsWith("http://")){
					nomeSito="http://"+nomeSito;
				}
				if(!nomeSito.endsWith("/")){
					nomeSito=nomeSito+"/";
				}
				IscrizioniManager im=new IscrizioniManager();
				IscrizioniManager.mySite=nomeSito;
				try{
					im.setSito(nomeSito);
				}catch(Exception rre){
					
				}
				String user=jTextFieldUser.getText();
				String pass=jTextFieldPass.getText();
				String xmlRpcUrl = IscrizioniManager.mySite+"xmlrpc.php";
				try {
					Wordpress wp = new Wordpress(user, pass, xmlRpcUrl);
					wp.getUserInfo();
				} catch (MalformedURLException e2) {
					JOptionPane.showMessageDialog(PanelUserEPass.this,"Errore:\nIl sito non è raggiungibile. \nControlla la connessione ad internet o riprova più tardi");
					return;
				} catch (XmlRpcFault e1) {
					// TODO Auto-generated catch block
					JOptionPane.showMessageDialog(PanelUserEPass.this,"Errore:\nLe credenziali inserite non sono valide. \nControllale e riprova");
					return;
				}
				IscrizioniManager isma=new IscrizioniManager();
				try {
					isma.setUserEPass(user, pass);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				if(PanelUserEPass.this.init){
					FormSincronizzaIscrizioni.apriGeicat();
				}
				dispose();
			}
		});
		jButtonSalva.setBounds(270, 265, 117, 25);
		getContentPane().add(jButtonSalva);
		
		JButton jButtonAnnulla = new JButton("ANNULLA");
		jButtonAnnulla.setBounds(420, 265, 117, 25);
		jButtonAnnulla.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				dispose();
				
			}
		});
		getContentPane().add(jButtonAnnulla);
		IscrizioniManager im=new IscrizioniManager();
		try{
			String user=im.getUser();
			jTextFieldUser.setText(user);
			
		}catch(Exception rre){
			
		}
		
		try{
			String pass=im.getPass();
			jTextFieldPass.setText(pass);
			jTextFieldRipetiPass.setText(pass);
			
			jTextFieldNomeSito = new JTextField();
			jTextFieldNomeSito.setText("");
			jTextFieldNomeSito.setColumns(10);
			jTextFieldNomeSito.setBounds(293, 70, 244, 28);
			getContentPane().add(jTextFieldNomeSito);
			
			JLabel label = new JLabel("Url base del sito");
			label.setBounds(81, 76, 194, 15);
			getContentPane().add(label);
			
			JLabel label_1 = new JLabel("Esempio: http://www.nomesito.it/");
			label_1.setFont(new Font("Dialog", Font.BOLD, 10));
			label_1.setBounds(81, 87, 194, 15);
			getContentPane().add(label_1);
		}catch(Exception rre){
			
		}
		try{
			String ssite=im.getSito();
			jTextFieldNomeSito.setText(ssite);
			
		}catch(Exception rre){
			
		}
		setSize(600,375);
		setResizable(false);
		setLocationRelativeTo(null);
	}
	
	public static void main(String[] args){
		new PanelUserEPass(false).setVisible(true);
	}
}
